// Builder（建造者模式）
// Builder模式将对象的创建过程分解为多个步骤，并提供一个统一的接口来创建对象。在Go语言中，可以使用链式调用和函数式编程来实现建造者模式。
package builder

type Product struct {
	Field1 string
	Field2 string
}

type Builder struct {
	field1 string
	field2 string
}

func NewBuilder() *Builder {
	return &Builder{}
}

func (b *Builder) WithField1(field1 string) *Builder {
	b.field1 = field1
	return b
}

func (b *Builder) WithField2(field2 string) *Builder {
	b.field2 = field2
	return b
}

func (b *Builder) Build() *Product {
	return &Product{
		Field1: b.field1,
		Field2: b.field2,
	}
}
